import java.util.Optional;

public class OptionalTest {


    public static void main(String[] args) {
        //Optional.of要求传入的参数要非空
        Optional<String> name = Optional.of("Sanaulla");
        System.out.println(name);
        //传入参数为null，抛出NullPointerException.
        //Optional<String> someNull = Optional.of(null);
        if(name.isPresent()){
            System.out.println("name.get():"+name.get());
        }

        //允许传入为空的使用方法：
        Optional<String> someNull = Optional.ofNullable(null);
        if(someNull.isPresent()){
            System.out.println("someNull.get():"+someNull.get());
        }
//        someNull.orElse("other");
//        System.out.println(someNull.get());


        //map方法执行传入的lambda表达式参数对Optional实例的值进行修改。
//为lambda表达式的返回值创建新的Optional实例作为map方法的返回值。
        Optional<String> upperName = name.map((value) -> value.toUpperCase());
        System.out.println(upperName.orElse("No value found"));
    }
}
